// var o;
// var r = (function(e) {
//     function t() {
//         var t = (null !== e && e.apply(this, arguments)) || this;
//         t.serverTime = Date.now();
//         return t;
//     }
//     __extends(t, e);
//     t.create_Server_Time_Com = function() {
//         if (!t._instance) {
//             var e = new cc.Node("ServerTime");
//             var n = e.addComponent(t);
//             cc.director.getScene().addChild(e);
//             return n.chushihua_shijian();
//         }
//         return Promise.resolve();
//     };
//     t.getInstance = function() {
//         return t._instance ? t._instance : null;
//     };
//     t.huoquFuwuqiShijian = function() {
//         return t._instance ? t._instance.huoquFuwuqiShijian() : Date.now();
//     };
//     t.prototype.onLoad = function() {
//         t._instance ?
//             this.node.destroy() :
//             ((t._instance = this), cc.game.addPersistRootNode(this.node), this.jianting_youxi_xianshi());
//     };
//     t.prototype.onDestroy = function() {
//         t._instance = null;
//     };
//     t.prototype.huoquFuwuqiShijian = function() {
//         return this.serverTime;
//     };
//     t.prototype.chushihua_shijian = function() {
//         var e = this;
//         return new Promise(function(t) {
//             e.yibu_huoqu_shijian_chuo(function(n) {
//                 e.serverTime = n;
//                 t(n);
//             });
//         });
//     };
//     t.prototype.jianting_youxi_xianshi = function() {
//         var e = this;
//         ailin_sdk_manager.onShow(function() {
//             if (cc.isValid(e)) {
//                 e.chushihua_shijian();
//             }
//         });
//     };
//     t.prototype.yibu_huoqu_shijian_chuo = function(e) {
//         var t = this;
//         e(t.huoqu_bendi_shijian());
//     };
//     t.prototype.huoqu_bendi_shijian = function() {
//         return Date.now();
//     };
//     t.prototype.update = function(e) {
//         this.serverTime += Math.round(1e3 * e);
//     };
//     t._instance = null;
//     return t;
// })(cc.Component);
// exports.default = r;

/**
 * @class ServerTime
 * @extends cc.Component
 * @description 服务器时间管理类，实现了时间同步和监听游戏显示的功能
 */
class ServerTime extends cc.Component {
    constructor() {
        super();
        /**
         * @property {number} serverTime - 服务器时间
         */
        this.serverTime = Date.now();
    }

    /**
     * @function create_Server_Time_Com
     * @description 创建服务器时间组件，如果已存在则直接返回
     * @returns {Promise}
     */
    static create_Server_Time_Com() {
        if (!ServerTime._instance) {
            const node = new cc.Node("ServerTime");
            const instance = node.addComponent(ServerTime);
            cc.director.getScene().addChild(node);
            return instance.chushihua_shijian();
        }
        return Promise.resolve();
    }

    /**
     * @function getInstance
     * @description 获取服务器时间组件的实例
     * @returns {ServerTime|null}
     */
    static getInstance() {
        return ServerTime._instance ? ServerTime._instance : null;
    }

    /**
     * @function huoquFuwuqiShijian
     * @description 获取服务器时间
     * @returns {number}
     */
    static huoquFuwuqiShijian() {
        return Date.now();
        // return ServerTime._instance ? ServerTime._instance.huoquFuwuqiShijian() : Date.now();
    }

    /**
     * @function onLoad
     * @description 加载时的回调函数，初始化单例和持久化节点
     */
    onLoad() {
        if (ServerTime._instance) {
            this.node.destroy();
        } else {
            ServerTime._instance = this;
            cc.game.addPersistRootNode(this.node);
            this.jianting_youxi_xianshi();
        }
    }

    /**
     * @function onDestroy
     * @description 销毁时的回调函数，清除单例
     */
    onDestroy() {
        ServerTime._instance = null;
    }

    /**
     * @function huoquFuwuqiShijian
     * @description 获取服务器时间
     * @returns {number}
     */
    huoquFuwuqiShijian() {
        return this.serverTime;
    }

    /**
     * @function chushihua_shijian
     * @description 初始化时间，异步获取时间戳
     * @returns {Promise<number>}
     */
    chushihua_shijian() {
        return new Promise((resolve) => {
            this.yibu_huoqu_shijian_chuo((timestamp) => {
                this.serverTime = timestamp;
                resolve(timestamp);
            });
        });
    }

    /**
     * @function jianting_youxi_xianshi
     * @description 监听游戏显示事件
     */
    jianting_youxi_xianshi() {
        ailin_sdk_manager.onShow(() => {
            if (cc.isValid(this)) {
                this.chushihua_shijian();
            }
        });
    }

    /**
     * @function yibu_huoqu_shijian_chuo
     * @description 异步获取时间戳
     * @param {function} callback - 获取时间戳后的回调函数
     */
    yibu_huoqu_shijian_chuo(callback) {
        callback(this.huoqu_bendi_shijian());
    }

    /**
     * @function huoqu_bendi_shijian
     * @description 获取本地时间
     * @returns {number}
     */
    huoqu_bendi_shijian() {
        return Date.now();
    }

    /**
     * @function update
     * @description 更新服务器时间
     * @param {number} deltaTime - 每帧之间的时间间隔
     */
    update(deltaTime) {
        this.serverTime += Math.round(1000 * deltaTime);
    }
}

// 静态成员变量的定义
ServerTime._instance = null;

// 导出模块
exports.default = ServerTime;
